home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-04-14 | 11.7 KB | 215 lines | [ttro/ttxt] |
- About MacsBug 6.5d12
- 4/13/95
-
- HEAP SCRAMBLING
-
- When we move a block of data around, we can't tell if it contains executable code, so the
- processor caches should have been flushed on the destination range. In the past, when
- the entire cache was flushed very often, this wasn't a problem. With the cache flushing
- changes in 6.5d10, heap scrambling became very much unreliable. This has been fixed.
-
- POWERPC EMBEDDED SYMBOLS
-
- We now support looking up PowerPC embedded symbols from traceback tables. If you're using the
- newest Metrowerks 1.2.1 C/C++ compilers you can take advantage of this. The only other compiler
- I know that currently supports traceback tables is xlc for the RS/6000. With the current
- implementation, typing a symbol name will not evaluate to the address of that routine. The
- traceback symbols are currently only used within a disassembly of PowerPC code.
-
- CFM SYMBOL LOOKUP
-
- When you're stepping through a fragment of PowerPC code that doesn't contain any exported
- CFM symbols (a simple application comes to mind), the delay between steps has been drastically
- reduced. This was done by removing a very large number of Mixed Mode switches on each line of
- disassembly, as well as fixing a logic bug that caused us to exhaustively look for 68K symbols
- when there couldn't possibly be any.
-
- WH COMMAND
-
- When displaying an address that is in VM file-mapped space, MacsBug now shows what CFM library
- the address resides within.
-
- STACK CRAWL
-
- MacsBug now understands Mixed Mode stacks when using the "SC7" command, and will show you
- the instruction set of each caller. This command now works correctly from either PowerPC
- or 68K code. For this release the "SC6" command works exactly as it did in 6.5d11 due to a
- last-minute problem (infinite recursion sucks). It will fully understand Mixed Mode stacks
- in the next release.
-
- POWERPC DEBUGGING
-
- •When stepping up to a flow of control instruction, MacsBug displays a message which
- indicates if the branch will or will not be taken. In previous versions this was
- frequently wrong due to a sign-extension bug in the compiler, which we've worked around.
- • You can now disable PowerPC Debugger and DebugStr calls with the “DX” command.
- • The “TF” (Total Floating Point display) command now works when in PowerPC code, and will
- show the entire PowerPC native FPU register set. You can now use “FPR0” through “FPR31”
- in expressions, although this is totally useless since MacsBug's expression evaluation
- is centered around 32-bit values, and FPRs are 64-bit.
- • When displaying the PowerPC register set via “TD”, we now know about the 603e, and display
- a reasonable message for future processors.
- • When debugging PowerPC code at boot time, we no longer display the name of the currently
- loading extension after each and every step or trace. My, that was annoying.
-
- There are a few problems with native debugging that you should be aware of. They are:
-
- • If you're stopped on a native breakpoint, you currently can't Go, you need to Step once
- and then Go.
- • As above, if you're sitting at a branch to subroutine instruction that has a breakpoint
- located at it, you cannot Step Over the subroutine call without first removing the
- breakpoint.
- • If you use the single-machine Macintosh Debugger, or the Metrowerks Debugger which
- require the PowerMac Debug Services background application, you shouldn't place the
- app in the Startup Items folder. The app has a feature such that if it can't
- communicate with a host debugger, it will DebugStr into 68K code when it sees a
- native exception (breakpoint, trace, etc.). MacsBug will not get a chance to handle
- any native exceptions. If you do use a high-level debugger in cooperation with
- MacsBug, you should place the background application in the same folder as your
- debugger so it gets launched when you start up the debugger.
-
- RB AND RS
-
- These commands no longer reboot if there are extra parameters on the command line. The
- motivation here is that Dave recently typed “rb -s” when he meant to type “rd -s”, and
- he really, really didn't mean to reboot his system at that particular time.
-
- DCMD COMMAND
-
- We've added a new command which displays a compact list of all installed dcmds. This list
- includes the dcmd name and syntax, as well as the version if the dcmd is format 3 or later.
- The command can accept a optional prefix string to limit the display to a subset of all dcmds.
-
- RD DCMD
-
- We've added a new option, “-h” which will show information on a resource given its handle.
- Very, very useful. When looking up resources by type, the “-t” option is now optional, so
- you can now type something like “RD 'STR '”.
-
- GESTALT DCMD
-
- A number of new selectors were added to the list of those that are recognized.
-
- THING DCMD
-
- The Thing dcmd is now a part of the standard MacsBug distribution. This dcmd displays
- information on Components.
-
- JUMPTABLE DCMD
-
- Fixed a stack imbalance problem that would cause MacsBug to exit when the dcmd was done
- executing. Why this had that sort of behavior and didn't crash is extremely odd.
-
- EXPRESSION EVALUATION
-
- In the past there was no way to use the name of a trap in an expression and have it evaluate
- to the trap's number. Using the syntax “††<trapname>” now provides for this. For example, if
- you want to see what selector $18 off of trap HFSDispatch is, but you don't know the trap
- number, this expression will do the trick:
-
- dh 7018 ††HFSDispatch
-
- Of course, in this example you had to know that 7018 was MOVEQ #$18, D0 (everyone does, right?).
-
- With the addition of ROM map and Code Fragment Manager symbols in recent releases, the potential
- for confusion about exactly what symbol will be found if a name collision occurs has increased.
- If you know that a symbol you're trying to look up is ROM map-based, you've been able to prefix
- the symbol with the Option-R ('®') character. Now you can do a similar lookup order force for CFM.
- If your symbol string is prefixed with Option-G ('©'), it will be searched for first in the CFM
- name space. Since Option-G looks reasonable when displayed ('C' == CFM), but is a pain to remember,
- Option-C now maps to Option-G (try it, they're identical as far as MacsBug is concerned).
-
- We've added a really cool new feature we call “explain significance of”. During simple expression
- evaluation, we now show the magnitude of the resultant value in more human intelligible terms. In
- our daily trials debugging the System Software, we're quite often surprised at how many people can't
- look at a hex value and realize, “Oh, that's past the end of your logical RAM - that's why you died”.
- With this feature we hope for a greater awareness of the general magnitude of things. For example,
- typing the value $120C60 yields:
-
- 120C60 = $00120C60 #1182816 #1182816 '••`' (between 1M and 2M)
-
- For values that contain lots of trailing zeros, you'll get to see a new notation we've developed
- for more easily describing a 32-bit value. So that you don't have to call out each individual
- trailing zero (and look silly counting along on your fingers as you talk to your co-workers), we've
- developed the “kabillion” short-hand notation. For values that contain at least 5 trailing (least-
- significant) zeros, the notation will be used. For example, for $40800000, you get:
-
- 40800000 = $40800000 #1082130432 #1082130432 '@A••'
- (just over 1G; 4 0 8 kabillion)
-
- This is read “four-zero-eight kabillion” or “four-oh-eight kabillion”. Cool, huh?
-
- You can now use the Option-/ character ('÷') as an alias for '/' (division).
-
- MACROS
-
- Macros can now optionally take parameters. When processing a macro expansion, positional
- parameters ®1 through ®9 (Option-R) represent the remaining whitespace-delimited tokens on the
- command line after the macro name. The parser understands the number of parameters your macro
- requires by noticing the highest-numbered parameter. If you use®9 as a single parameter, you must
- have eight preceding parameters, which are ignored. These parameters can be quoted with single or
- double quotes, the quotes are not part of the parameter value. For example, the following
- macro takes a single parameter, a resource type. You would invoke this macro with a command
- line such as “gres 'gpch'”.
-
- "gres", "atb GetResource (sp+2)^='®1'"
-
- A sample parameterized macro is provided within MacsBug which will break on all 68K calls to
- GetResource, Get1Resource, and Get1xResource for a given type. This macro is named “RType”
- and is invoked as in the example above.
-
- When displaying macros with the “MCD” command, and the macro expansion needed two or more
- lines to be fully displayed, the text really should have wrapped instead of disappearing into
- the bit-bucket off the right side of the screen. Therefore, we now wrap the text appropriately.
- If you terminate this command before it finishes, you'll now get control back a lot faster.
-
- Since the evaluation of trap numbers in expressions has changed, if you want to find the
- trap name given a number but don't want to have to type “WH ††Axyz”, we've added a simple macro.
- The macro “WHT” shows the name and implementation address of a trap given a trap name or number.
-
- TEMPLATES
-
- An extremely popular bug in template display has been fixed. When showing a region of memory
- with a template that contained a pointer field, and that field was filled was a garbage bus-
- error value, we'd quit showing the template when we reached that field. For example, doing
- “dm a0 iopb” with an ioNamePtr field pointing off into unmapped space no longer terminates
- the template display.
-
- MODERN MEMORY MANAGER HEAP STUFF
-
- When identifying whether a heap is the Process Manager heap, we now only do this if the
- Process Manager is around (ie. it's after boot time).
-
- DISASSEMBLY
-
- When displaying the offset into a procedure, we now show 5 nibbles for the offset instead of 4.
-
- MISCELLANEOUS
-
- If you've invoked a command that displays a lot of output, and tire of having to press Return
- or Space to display another page, you can now temporarily turn off these prompts. Using Command-
- Return or Command-Space at the prompt skips the remaining prompts this command would have
- generated. You can still abort the command by pressing any key, you just won't be asked about it a
- bunch of times. When the command terminates, the prompts will be re-enabled for the next command
- (unless you've used SET SCROLLPROMPT OFF to globally disable the feature).
-
- When we switch instruction set displays, we should now properly clean up all extra pixels in
- the register subdisplay.
-
- When you execute a command with too many parameters, MacsBug now displays a much more useful
- message, as well as actually showing you what parameters weren't needed.
-
- Command-G, -S, and -T now only work if the command line is empty.
-
- The TestDcmd application will now load format 3 dcmds, but doesn't do anything special to support
- them.
-
- The PlayMem general-purpose buffer is now always 4-byte aligned.
-
- BUILT-IN DEBUGGER PREFS
-
- We've added templates for the various SCSI Manager 4.3 API parameter blocks.
-
-
- ©1995 Apple Computer, Inc.
-